home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / zindent7.zip / ZINKEYDB.INC < prev    next >
Text File  |  1987-03-30  |  4KB  |  191 lines

  1.  
  2. (****************************************************)
  3. (* Include File                                     *)
  4. (* KeyDB.INC, v. 0900pm, wed, 25.Mar.87, Glen Ellis *)
  5. (****************************************************)
  6.  
  7. (*
  8. (*  parameters sent:
  9. (*
  10. (*   (OutLine, IndentPos, IndentNum , LenMax, MarkWrite );
  11. (*             SIP        SIN         SLM     SMW
  12. (*
  13. (*    IF    CASE   WHILE  counters :
  14. (*    SLI,  SLC,   SLW
  15. (*
  16. (*  dBASE-II traps first four characters of Keywords,
  17. (*  so parse algorithm here is simple.
  18. (*
  19. (*   pINDENT() located in ZinSTR.inc
  20. (*
  21. (**)
  22.  
  23. (*--------------------------------------------------------------------------*)
  24. procedure  pKEYDB( var kLINE : THEstr ;  var kIPOS : nbr; kINUM, kLenMax :nbr;
  25. var KMwrite : lgc ; var kLI, kLC, kLW : nbr);
  26.  
  27.  
  28. (* also, uses SysComment
  29. (*
  30. (* requires STRING.INC library of string functions
  31. (* all are var in order to allow sending back altered values
  32. (* kLINE  := OutLine
  33. (* kIPOS := indentpos = current indent position
  34. (* kINUM := indentnum = length of indent group
  35. (* KMwrite := KMwrite = controls write to disk
  36. (**)
  37.  
  38. var
  39. (* local memvars *)
  40. wkLINE : THEstr;
  41. KMark : lgc;
  42. x,y,z   : nbr;
  43.  
  44.  
  45. (*--------------------------------------------------------*)
  46.  
  47. begin  (* P *)
  48.  
  49.    (* Trim Left Spaces, prep for margin adjusted Pad-Left *)
  50.    (* Trim Right Spaces, we will not Pad-Right *)
  51.    pTRIMLR(kLINE);
  52.  
  53.    (* blank line *)
  54.    IF SysVertiate
  55.    then
  56.    IF  (kline = ' ') or (kline = '') then kLINE := '*';
  57.  
  58.    (* Create Working Line *)
  59.    wkLINE := kLINE;
  60.  
  61.    (* init *)
  62.    KMark := false;
  63.    KMwrite := true;
  64.  
  65.    (* convert working line to all caps *)
  66.    pAllCaps(wkLINE);
  67.  
  68.    (*-------------------------------*)
  69.    (* check for pos() of pKEYWORDs *)
  70.  
  71.    (*---------*)
  72.    (* Comment *)
  73.  
  74.    IF (pos('*',wkLINE) = 1) or (length(wkLINE) = 0)
  75.    then
  76.    begin
  77.       IF SysComment then
  78.       begin
  79.          pINDENT(kLINE,kIPOS,kLenMax);
  80.       end
  81.       ELSE
  82.       begin
  83.          KMwrite := false;
  84.       end;
  85.       KMark := true;
  86.    end;
  87.  
  88.    (*----*)
  89.    (* IF *)
  90.  
  91.    IF pos('IF',wkLINE) = 1
  92.    then
  93.    begin
  94.       pINDENT(kLINE,kIPOS,kLenMax);
  95.       kIPOS := kIPOS + kINUM;
  96.       KLI := KLI + 1;
  97.       KMark := true;
  98.    end;
  99.  
  100.    (* ELSE *)
  101.  
  102.    IF pos('ELSE',wkLINE) = 1
  103.    then
  104.    begin
  105.       kIPOS := kIPOS - kINUM;
  106.       pINDENT(kLINE,kIPOS,kLenMax);
  107.       kIPOS := kIPOS + kINUM;
  108.       KMark := true;
  109.    end;
  110.  
  111.    (* ENDIF *)
  112.  
  113.    IF pos('ENDI',wkLINE) = 1 then
  114.    begin
  115.       KLI := KLI -1;
  116.       kIPOS := kIPOS - kINUM;
  117.       pINDENT(kLINE,kIPOS,kLenMax);
  118.       KMark := true;
  119.    end;
  120.  
  121.    (*---------*)
  122.    (* DO CASE *)
  123.  
  124.    IF pos('DO CASE',wkLINE) = 1
  125.    then
  126.    begin
  127.       pINDENT(kLINE,kIPOS,kLenMax);
  128.       KLC := KLC + 1;
  129.       kIPOS := kIPOS + kINUM + kINUM;
  130.       KMark := true;
  131.    end;
  132.  
  133.    (* CASE OTHERWISE *)
  134.  
  135.    IF pos('CASE',wkLINE) or pos('OTHE',wkLINE) = 1
  136.    then
  137.    begin
  138.       kIPOS := kIPOS - kINUM;
  139.       pINDENT(kLINE,kIPOS,kLenMax);
  140.       kIPOS := kIPOS + kINUM;
  141.       KMark := true;
  142.    end;
  143.    
  144.    (* ENDCASE *)
  145.    
  146.    IF pos('ENDC',wkLINE) = 1
  147.    then
  148.    begin
  149.       KLC := KLC -1;
  150.       kIPOS := kIPOS -kINUM -kINUM;
  151.       pINDENT(kLINE,kIPOS,kLenMax);
  152.       KMark := true;
  153.    end;
  154.    
  155.    (*----------*)
  156.    (* DO WHILE *)
  157.    
  158.    IF pos('DO WHIL',wkLINE) = 1
  159.    then
  160.    begin
  161.       pINDENT(kLINE,kIPOS,kLenMax);
  162.       KLW := KLW + 1;
  163.       kIPOS := kIPOS + kINUM;
  164.       KMark := true;
  165.    end;
  166.    
  167.    (* ENDDO *)
  168.    
  169.    IF pos('ENDD',wkLINE) = 1
  170.    then
  171.    begin
  172.       KLW := KLW -1;
  173.       kIPOS := kIPOS - kINUM;
  174.       pINDENT(kLINE,kIPOS,kLenMax);
  175.       KMark := true;
  176.    end;
  177.    
  178.    (*----------------*)
  179.    (*  none of above *)
  180.    
  181.    IF not(KMark)
  182.    then
  183.    begin
  184.       (* left pad current kIPOS count *)
  185.       pINDENT(kLINE,kIPOS,kLenMax);
  186.    end;
  187.    
  188. end; (* proc *)
  189.  
  190. (********************************************************************)
  191. (*<<<>>>*)